﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;

namespace StokKarti
{
    public partial class frmStokKarti : XtraForm
    {
        public frmStokKarti()
        {
            InitializeComponent();
        }

        public string CalculateChecksumDigit(string barkod, bool ean13)
        {
            string sTemp = barkod;
            int iSum = 0;
            int iDigit = 0;
            for (int i = sTemp.Length; i >= 1; i--)
            {
                iDigit = Convert.ToInt32(sTemp.Substring(i - 1, 1));
                if (ean13)
                {
                    if (i % 2 == 0)
                    {
                        iSum += iDigit * 3;
                    }
                    else
                    {
                        iSum += iDigit * 1;
                    }
                }
                else
                {
                    if (i % 2 != 0)
                    {
                        iSum += iDigit * 3;
                    }
                    else
                    {
                        iSum += iDigit * 1;
                    }
                }

            }

            int iCheckSum = (10 - (iSum % 10)) % 10;
            return barkod + iCheckSum;
        }

        private string GetBarkod()
        {
            string grp = ((ComboItem)cmbBarkodGrup.SelectedItem).Value.ToString();
            string barkod = string.Empty;
            string dokuz = "";
            int rnd = 0;
            if (cmbBarkodTip.SelectedIndex == 0) //ean 13
            {
                grp = grp.PadRight(3, '0');
                dokuz = dokuz.PadRight(12 - grp.Length, '9');
                rnd = new Random().Next(1, int.Parse(dokuz));
                barkod = CalculateChecksumDigit(grp + rnd.ToString(), true);
            }
            else //ean8
            {
                dokuz = dokuz.PadRight(7 - grp.Length, '9');
                rnd = new Random().Next(1, int.Parse(dokuz));
                barkod = CalculateChecksumDigit(grp + rnd.ToString(), false);
            }
            return barkod;
        }

        private void BarkodOlustur(string stokkod, SqlTransaction trn)
        {
            SqlParameter prm1 = new SqlParameter("@barkod", SqlDbType.VarChar, 25);
            SqlParameter prm2 = new SqlParameter("@stokkod", SqlDbType.VarChar, 25);
            SqlParameter prm3 = new SqlParameter("@crdate", SqlDbType.DateTime);
            SqlParameter prm4 = new SqlParameter("@tip", SqlDbType.TinyInt);
            prm4.Value = cmbBarkodTip.SelectedIndex;
            prm2.Value = stokkod;
            prm3.Value = DateTime.Now;

            for (int i = 0; i < 100; i++)
            {
                prm1.Value = GetBarkod();
                bool var = DataLayer.Get.ExecScalar<bool>("select cast(count(bar_RECno) as bit) from BARKOD_TANIMLARI WITH (NOLOCK)  where bar_kodu=@barkod", prm1);
                if (!var)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("insert into BARKOD_TANIMLARI (bar_RECid_DBCno,bar_RECid_RECno,bar_SpecRECno,bar_iptal,bar_fileid,bar_hidden,bar_kilitli,bar_degisti,bar_checksum,bar_create_user,bar_create_date,bar_lastup_user,bar_lastup_date,bar_special1,bar_special2,bar_special3,bar_kodu,bar_stokkodu,bar_partikodu,bar_lotno,bar_serino_veya_bagkodu,bar_barkodtipi,bar_icerigi,bar_birimpntr,bar_master,bar_bedenpntr,bar_renkpntr,bar_baglantitipi,bar_harrecid_dbcno,bar_harrecid_recno) values (0,-1,0,0,15,0,0,0,0,1,@crdate,1,@crdate,'','','',@barkod,@stokkod,'',0,'',@tip,0,1,0,0,0,0,0,0) ");
                    sb.Append(";update BARKOD_TANIMLARI set bar_RECid_RECno=bar_RECno where bar_RECid_RECno=-1");

                    DataLayer.Get.ExecTrn(sb.ToString(), trn, prm1, prm2, prm3, prm4);
                    break;
                }
            }
        }

        private void FiyatKopyala(SqlTransaction trn, string eski, string yeni)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("if not exists(select sfiyat_RECno from STOK_SATIS_FIYAT_LISTELERI where sfiyat_stokkod=@hedef and sfiyat_listesirano=@listeno and sfiyat_deposirano=@depo and sfiyat_odemeplan=0) ");
            sb.Append(" INSERT INTO STOK_SATIS_FIYAT_LISTELERI (sfiyat_RECid_DBCno, sfiyat_RECid_RECno, sfiyat_SpecRECno, sfiyat_iptal, sfiyat_fileid, sfiyat_hidden, sfiyat_kilitli, sfiyat_degisti, sfiyat_checksum, sfiyat_create_user, sfiyat_create_date, sfiyat_lastup_user, sfiyat_lastup_date, sfiyat_special1, sfiyat_special2, sfiyat_special3, sfiyat_stokkod, sfiyat_listesirano, sfiyat_deposirano, sfiyat_odemeplan, sfiyat_fiyati, sfiyat_doviz, sfiyat_iskontokod, sfiyat_deg_nedeni, sfiyat_primyuzdesi, sfiyat_kampanyakod) ");
            sb.Append(" SELECT     sfiyat_RECid_DBCno, -1, sfiyat_SpecRECno, sfiyat_iptal, sfiyat_fileid, sfiyat_hidden, sfiyat_kilitli, sfiyat_degisti, sfiyat_checksum, sfiyat_create_user, sfiyat_create_date, sfiyat_lastup_user, sfiyat_lastup_date, sfiyat_special1, sfiyat_special2, sfiyat_special3, @hedef, sfiyat_listesirano, sfiyat_deposirano, sfiyat_odemeplan, sfiyat_fiyati, sfiyat_doviz, sfiyat_iskontokod, sfiyat_deg_nedeni, sfiyat_primyuzdesi, sfiyat_kampanyakod FROM         STOK_SATIS_FIYAT_LISTELERI AS STOK_SATIS_FIYAT_LISTELERI_1 ");
            sb.Append(" WHERE (sfiyat_stokkod =@kaynak and sfiyat_listesirano=@listeno and sfiyat_deposirano=@depo and sfiyat_odemeplan=0);");
            sb.Append(" update STOK_SATIS_FIYAT_LISTELERI set sfiyat_RECid_RECno=sfiyat_RECno where sfiyat_RECid_RECno=-1;");

            SqlParameter prm1 = new SqlParameter("@kaynak", SqlDbType.VarChar, 25);
            SqlParameter prm2 = new SqlParameter("@hedef", SqlDbType.VarChar, 25);
            SqlParameter prm3 = new SqlParameter("@listeno", SqlDbType.Int);
            SqlParameter prm4 = new SqlParameter("@depo", SqlDbType.Int);


            DataTable depo = DataLayer.Get.Fill("select dep_no from DEPOLAR WITH (NOLOCK)");
            DataTable fiyatlar = DataLayer.Get.Fill("SELECT sfl_sirano FROM STOK_SATIS_FIYAT_LISTE_TANIMLARI WITH (NOLOCK)");
            depo.Rows.Add(0);
            for (int i = 0; i < depo.Rows.Count; i++)
            {
                for (int f = 0; f < fiyatlar.Rows.Count; f++)
                {
                    prm1.Value = eski;
                    prm2.Value = yeni;
                    prm3.Value = Cevir.Parse<int>(fiyatlar.Rows[f][0]);
                    prm4.Value = Cevir.Parse<int>(depo.Rows[i][0]);

                    DataLayer.Get.ExecTrn(sb.ToString(), trn, prm1, prm2, prm3, prm4);
                }
            }
        }



        private void StokKopyala()
        {
            string kaynakStok = txtStokKodu.Text;
            string stokAdi = txtStokAdi.Text;
            SqlTransaction trn = DataLayer.Get.OpenTrn();

            StringBuilder sb = new StringBuilder();
            sb.Append("if not exists(select sto_RECno from STOKLAR where sto_kod=@hedef) ");
            sb.Append("INSERT INTO STOKLAR  (sto_RECid_DBCno, sto_RECid_RECno, sto_SpecRECno, sto_iptal, sto_fileid, sto_hidden, sto_kilitli, sto_degisti, sto_checksum, sto_create_user, sto_create_date,sto_lastup_user, sto_lastup_date, sto_special1, sto_special2, sto_special3, sto_kod, sto_isim, sto_kisa_ismi, sto_yabanci_isim, sto_sat_cari_kod, sto_cins,sto_doviz_cinsi, sto_detay_takip, sto_birim1_ad, sto_birim1_katsayi, sto_birim1_agirlik, sto_birim1_en, sto_birim1_boy, sto_birim1_yukseklik, sto_birim1_dara,sto_birim2_ad, sto_birim2_katsayi, sto_birim2_agirlik, sto_birim2_en, sto_birim2_boy, sto_birim2_yukseklik, sto_birim2_dara, sto_birim3_ad, sto_birim3_katsayi,sto_birim3_agirlik, sto_birim3_en, sto_birim3_boy, sto_birim3_yukseklik, sto_birim3_dara, sto_birim4_ad, sto_birim4_katsayi, sto_birim4_agirlik, sto_birim4_en,sto_birim4_boy, sto_birim4_yukseklik, sto_birim4_dara, sto_muh_kod, sto_muh_Iade_kod, sto_muh_sat_muh_kod, sto_muh_satIadmuhkod, sto_muh_sat_isk_kod,sto_muh_aIiskmuhkod, sto_muh_satmalmuhkod, sto_yurtdisi_satmuhk, sto_ilavemasmuhkod, sto_yatirimtesmuhkod, sto_depsatmuhkod, sto_depsatmalmuhkod,sto_bagortsatmuhkod, sto_satfiyfarkmuhkod, sto_yurtdisisatmalmuhkod, sto_bagortsatmalmuhkod, sto_karorani, sto_min_stok, sto_siparis_stok, sto_max_stok,sto_ver_sip_birim, sto_al_sip_birim, sto_siparis_sure, sto_perakende_vergi, sto_toptan_vergi, sto_yer_kod, sto_elk_etk_tipi, sto_raf_etiketli, sto_etiket_bas,sto_satis_dursun, sto_siparis_dursun, sto_malkabul_dursun, sto_malkabul_gun1, sto_malkabul_gun2, sto_malkabul_gun3, sto_malkabul_gun4, sto_malkabul_gun5,sto_malkabul_gun6, sto_malkabul_gun7, sto_siparis_gun1, sto_siparis_gun2, sto_siparis_gun3, sto_siparis_gun4, sto_siparis_gun5, sto_siparis_gun6,sto_siparis_gun7, sto_iskon_yapilamaz, sto_tasfiyede, sto_alt_grup_no, sto_kategori_kodu, sto_urun_sorkod, sto_altgrup_kod, sto_anagrup_kod, sto_uretici_kodu,sto_sektor_kodu, sto_reyon_kodu, sto_muhgrup_kodu, sto_ambalaj_kodu, sto_marka_kodu, sto_beden_kodu, sto_renk_kodu, sto_model_kodu, sto_sezon_kodu,sto_hammadde_kodu, sto_prim_kodu, sto_kalkon_kodu, sto_paket_kodu, sto_mkod_artik, sto_kasa_tarti_fl, sto_bedenli_takip, sto_renkDetayli, sto_miktarondalikli_fl,sto_pasif_fl, sto_calisan_vi_gecerli, sto_eksiyedusebilir_fl, sto_GtipNo, sto_puan, sto_komisyon_hzmkodu, sto_komisyon_orani, sto_otvuygulama, sto_otvtutar,sto_otvliste, sto_otvbirimi, sto_prim_orani, sto_garanti_sure, sto_garanti_sure_tipi, sto_iplik_Ne_no, sto_standartmaliyet, sto_kanban_kasa_miktari,sto_oivuygulama, sto_zraporu_stoku_fl, sto_maxiskonto_orani, sto_detay_takibinde_depo_kontrolu_fl, sto_tamamlayici_kodu, sto_oto_barkod_acma_sekli,sto_oto_barkod_kod_yapisi, sto_KasaIskontoOrani, sto_KasaIskontoTutari, sto_gelirpayi, sto_oivtutar, sto_giderkodu, sto_oivvergipntr, sto_Tevkifat_turu, sto_SKT_fl,sto_terazi_SKT, sto_RafOmru) ");
            sb.Append(" SELECT     sto_RECid_DBCno, -1, sto_SpecRECno, sto_iptal, sto_fileid, sto_hidden, sto_kilitli, sto_degisti, sto_checksum, sto_create_user, @tarih,sto_lastup_user, @tarih, sto_special1, sto_special2, 1, @hedef, @isim, sto_kisa_ismi, sto_yabanci_isim, sto_sat_cari_kod, sto_cins, sto_doviz_cinsi, sto_detay_takip, sto_birim1_ad, sto_birim1_katsayi, sto_birim1_agirlik, sto_birim1_en, sto_birim1_boy, sto_birim1_yukseklik, sto_birim1_dara, sto_birim2_ad, sto_birim2_katsayi, sto_birim2_agirlik, sto_birim2_en, sto_birim2_boy, sto_birim2_yukseklik, sto_birim2_dara, sto_birim3_ad, sto_birim3_katsayi, sto_birim3_agirlik, sto_birim3_en, sto_birim3_boy, sto_birim3_yukseklik, sto_birim3_dara, sto_birim4_ad, sto_birim4_katsayi, sto_birim4_agirlik, sto_birim4_en, sto_birim4_boy, sto_birim4_yukseklik, sto_birim4_dara, sto_muh_kod, sto_muh_Iade_kod, sto_muh_sat_muh_kod, sto_muh_satIadmuhkod, sto_muh_sat_isk_kod, sto_muh_aIiskmuhkod, sto_muh_satmalmuhkod, sto_yurtdisi_satmuhk, sto_ilavemasmuhkod, sto_yatirimtesmuhkod, sto_depsatmuhkod, sto_depsatmalmuhkod, sto_bagortsatmuhkod, sto_satfiyfarkmuhkod, sto_yurtdisisatmalmuhkod, sto_bagortsatmalmuhkod, sto_karorani, sto_min_stok, sto_siparis_stok, sto_max_stok, sto_ver_sip_birim, sto_al_sip_birim, sto_siparis_sure, sto_perakende_vergi, sto_toptan_vergi, sto_yer_kod, sto_elk_etk_tipi, sto_raf_etiketli, sto_etiket_bas, sto_satis_dursun, sto_siparis_dursun, sto_malkabul_dursun, sto_malkabul_gun1, sto_malkabul_gun2, sto_malkabul_gun3, sto_malkabul_gun4, sto_malkabul_gun5, sto_malkabul_gun6, sto_malkabul_gun7, sto_siparis_gun1, sto_siparis_gun2, sto_siparis_gun3, sto_siparis_gun4, sto_siparis_gun5, sto_siparis_gun6, sto_siparis_gun7, sto_iskon_yapilamaz, sto_tasfiyede, sto_alt_grup_no, sto_kategori_kodu, sto_urun_sorkod, sto_altgrup_kod, sto_anagrup_kod, sto_uretici_kodu, sto_sektor_kodu, sto_reyon_kodu, sto_muhgrup_kodu, sto_ambalaj_kodu, sto_marka_kodu, @beden, @renk, sto_model_kodu, sto_sezon_kodu, sto_hammadde_kodu, sto_prim_kodu, sto_kalkon_kodu, sto_paket_kodu, sto_mkod_artik, sto_kasa_tarti_fl, sto_bedenli_takip, sto_renkDetayli, sto_miktarondalikli_fl, sto_pasif_fl, sto_calisan_vi_gecerli, sto_eksiyedusebilir_fl, @kaynak, sto_puan, sto_komisyon_hzmkodu, sto_komisyon_orani, sto_otvuygulama, sto_otvtutar, sto_otvliste, sto_otvbirimi, sto_prim_orani, sto_garanti_sure, sto_garanti_sure_tipi, sto_iplik_Ne_no, sto_standartmaliyet, sto_kanban_kasa_miktari, sto_oivuygulama, sto_zraporu_stoku_fl, sto_maxiskonto_orani, sto_detay_takibinde_depo_kontrolu_fl, sto_tamamlayici_kodu, sto_oto_barkod_acma_sekli, sto_oto_barkod_kod_yapisi, sto_KasaIskontoOrani, sto_KasaIskontoTutari, sto_gelirpayi, sto_oivtutar, sto_giderkodu, sto_oivvergipntr, sto_Tevkifat_turu, sto_SKT_fl, sto_terazi_SKT, sto_RafOmru ");
            sb.Append(" FROM         STOKLAR AS STOKLAR_1 WHERE     (sto_kod = @kaynak);");
            sb.Append(" update STOKLAR set sto_RECid_RECno=sto_RECno where sto_RECid_RECno=-1;");

            SqlParameter prm1 = new SqlParameter("@kaynak", SqlDbType.VarChar, 25);
            SqlParameter prm2 = new SqlParameter("@hedef", SqlDbType.VarChar, 25);
            SqlParameter prm3 = new SqlParameter("@renk", SqlDbType.VarChar, 25);
            SqlParameter prm4 = new SqlParameter("@beden", SqlDbType.VarChar, 25);
            SqlParameter prm5 = new SqlParameter("@tarih", SqlDbType.DateTime);
            SqlParameter prm6 = new SqlParameter("@isim", SqlDbType.VarChar, 50);

            prm1.Value = kaynakStok;
            prm5.Value = DateTime.Now;

            int index = 0;

            if (cmbStokKod.SelectedIndex >= 1)
                index = 1;

            for (int i = 0; i < gridView1.RowCount; i++)
            {
                for (int c = index; c < gridView1.Columns.Count; c++)
                {
                    if ((cmbStokKod.SelectedIndex >= 1 && Convert.ToBoolean(gridView1.GetRowCellValue(i, gridView1.Columns[c]))) || cmbStokKod.SelectedIndex == 0)
                    {
                        string yeniStokKod = string.Empty;
                        string yeniStokAdi = string.Empty;
                        switch (cmbStokKod.SelectedIndex)
                        {
                            case 0:
                                yeniStokKod = string.Format("{0}.{1}", kaynakStok, gridView1.GetRowCellValue(i, gridView1.Columns[0]).ToString());
                                yeniStokAdi = stokAdi + " " + gridView1.GetRowCellValue(i, gridView1.Columns[0]).ToString() + " Renk ";
                                break;
                            case 1:
                                yeniStokKod = string.Format("{0}.{1}", kaynakStok, gridView1.Columns[c].Name.Substring(3));
                                yeniStokAdi = stokAdi + " " + gridView1.Columns[c].Name.Substring(3) + " Beden";
                                break;
                            case 2:
                                yeniStokKod = string.Format("{0}.{1}.{2}", kaynakStok, gridView1.GetRowCellValue(i, gridView1.Columns[0]).ToString(), gridView1.Columns[c].Name.Substring(3));
                                yeniStokAdi = stokAdi + " " + gridView1.GetRowCellValue(i, gridView1.Columns[0]).ToString() + " Renk " + gridView1.Columns[c].Name.Substring(3) + " Beden";
                                break;
                        }
                        prm2.Value = yeniStokKod;
                        prm3.Value = gridView1.GetRowCellValue(i, gridView1.Columns[0]).ToString();
                        prm4.Value = gridView1.Columns[c].Name.Substring(3);
                        if (yeniStokAdi.Length > 50)
                            prm6.Value = yeniStokAdi.Substring(0, 50);
                        else
                            prm6.Value = yeniStokAdi;
                        DataLayer.Get.ExecTrn(sb.ToString(), trn, prm1, prm2, prm3, prm4, prm5, prm6);
                        FiyatKopyala(trn, kaynakStok, yeniStokKod);
                        BarkodOlustur(yeniStokKod, trn);
                    }
                }
            }

            try
            {
                trn.Commit();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Hata:\r\n" + ex.Message);
            }
        }

        private void StokBul(int stokid)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT    STOKLAR.sto_kod,STOKLAR.sto_isim,dbo.fn_VergiYuzde(STOKLAR.sto_toptan_vergi) AS [Alış Kdv], dbo.fn_VergiYuzde(STOKLAR.sto_perakende_vergi) AS [Satış Kdv], STOK_ANA_GRUPLARI.san_isim AS [Ana Grup],STOK_ALT_GRUPLARI.sta_isim AS [Alt Grup], STOK_REYONLARI.ryn_ismi AS Reyon, STOK_KATEGORILERI.ktg_isim AS Kategori,STOK_SEKTORLERI.sktr_ismi AS Sektör, STOK_URETICILERI.urt_ismi AS Üretici, STOK_MARKALARI.mrk_ismi AS Marka,STOK_MODEL_TANIMLARI.mdl_ismi AS Model, STOKLAR.sto_birim1_ad AS [1.Birim], STOKLAR.sto_birim2_ad AS [2.Birim], STOKLAR.sto_birim3_ad AS [3.Birim] \r\n");
            sb.Append(" FROM         STOKLAR LEFT OUTER JOIN STOK_MODEL_TANIMLARI ON STOKLAR.sto_model_kodu = STOK_MODEL_TANIMLARI.mdl_kodu LEFT OUTER JOIN STOK_REYONLARI ON STOKLAR.sto_reyon_kodu = STOK_REYONLARI.ryn_kod LEFT OUTER JOIN STOK_MARKALARI ON STOKLAR.sto_marka_kodu = STOK_MARKALARI.mrk_kod LEFT OUTER JOIN STOK_SEKTORLERI ON STOKLAR.sto_sektor_kodu = STOK_SEKTORLERI.sktr_kod LEFT OUTER JOIN STOK_URETICILERI ON STOKLAR.sto_uretici_kodu = STOK_URETICILERI.urt_kod LEFT OUTER JOIN STOK_ANA_GRUPLARI ON STOKLAR.sto_anagrup_kod = STOK_ANA_GRUPLARI.san_kod LEFT OUTER JOIN STOK_ALT_GRUPLARI ON STOKLAR.sto_altgrup_kod = STOK_ALT_GRUPLARI.sta_kod AND STOKLAR.sto_anagrup_kod = STOK_ALT_GRUPLARI.sta_ana_grup_kod LEFT OUTER JOIN STOK_KATEGORILERI ON STOKLAR.sto_kategori_kodu = STOK_KATEGORILERI.ktg_kod \r\n");
            sb.AppendFormat(" WHERE     (STOKLAR.sto_RECno = {0}) ", stokid);
            DataTable dt = DataLayer.Get.Fill(sb.ToString());
            if (dt.Rows.Count > 0)
            {
                txtStokKodu.Text = dt.Rows[0][0].ToString();
                txtStokAdi.Text = dt.Rows[0][1].ToString();

                DataTable tmp = new DataTable();
                tmp.Columns.Add("Bilgi", typeof(string));
                tmp.Columns.Add("Değer", typeof(string));
                for (int i = 2; i < dt.Columns.Count; i++)
                {
                    tmp.Rows.Add(dt.Columns[i].Caption, dt.Rows[0][i].ToString());
                }
                gridControl2.DataSource = tmp;
                gridView2.Columns[0].MinWidth = 200;
                gridView2.BestFitColumns();
            }

            gridControl3.DataSource = DataLayer.Get.Fill(string.Format("SELECT     sfl_aciklama AS [Fiyat Tanımı], dbo.fn_StokSatisFiyati('{0}', sfl_sirano, 0) AS Fiyat FROM         STOK_SATIS_FIYAT_LISTE_TANIMLARI", txtStokKodu.Text));
            gridView3.BestFitColumns();
        }

        private void BedenRenkHazirla()
        {
            string[] bedenler = cmbBedenler.Text.Trim().Split(',');
            string[] renkler = cmbRenkler.Text.Trim().Split(',');

            DataTable dt = new DataTable();
            dt.Columns.Add("Renk Adı", typeof(string));
            int colCount = 0;
            for (int i = 0; i < bedenler.Length; i++)
            {
                if (!string.IsNullOrEmpty(bedenler[i]))
                {
                    dt.Columns.Add(bedenler[i].Trim(), typeof(bool));
                    colCount++;
                }
            }

            object[] rows = new object[colCount + 1];
            for (int i = 0; i < bedenler.Length; i++)
            {
                if (!string.IsNullOrEmpty(bedenler[i]))
                {
                    rows[i + 1] = true;
                }
            }

            for (int i = 0; i < renkler.Length; i++)
            {
                rows[0] = renkler[i].Trim();
                dt.Rows.Add(rows);
            }

            gridView1.Columns.Clear();
            gridControl1.DataSource = dt;
            gridView1.Columns[0].OptionsColumn.AllowEdit = false;
            gridView1.BestFitColumns();
            AcilanlariIsaretle(txtStokKodu.Text);
        }

        private void renk_yukle(string rnkkodu)
        {
            cmbRenkler.Properties.Items.Clear();
            SqlDataReader rd = DataLayer.Get.Reader(string.Format("SELECT  top 1 rnk_kodu, rnk_kirilim_1, rnk_kirilim_2, rnk_kirilim_3, rnk_kirilim_4, rnk_kirilim_5, rnk_kirilim_6, rnk_kirilim_7, rnk_kirilim_8, rnk_kirilim_9, rnk_kirilim_10 FROM         STOK_RENK_TANIMLARI where rnk_kodu = '{0}'", rnkkodu));
            if (rd.HasRows)
            {
                rd.Read();
                string kod = rd.GetString(0);
                for (int i = 1; i < rd.FieldCount; i++)
                {
                    if (!string.IsNullOrEmpty(rd.GetString(i)))
                    {
                        cmbRenkler.Properties.Items.Add(new ComboItem() { Text = rd.GetString(i), Value = kod }, false);
                    }
                }
                rd.Close();
            }
        }

        private void beden_yukle(string bdnkodu)
        {
            cmbBedenler.Properties.Items.Clear();
            SqlDataReader rd = DataLayer.Get.Reader(string.Format("SELECT top 1 bdn_kodu,bdn_kirilim_1, bdn_kirilim_2, bdn_kirilim_3, bdn_kirilim_4, bdn_kirilim_5, bdn_kirilim_6, bdn_kirilim_7, bdn_kirilim_8, bdn_kirilim_9, bdn_kirilim_10 FROM         STOK_BEDEN_TANIMLARI where bdn_kodu='{0}'", bdnkodu));
            if (rd.HasRows)
            {
                rd.Read();
                string kod = rd.GetString(0);
                for (int i = 1; i < rd.FieldCount; i++)
                {
                    if (!string.IsNullOrEmpty(rd.GetString(i)))
                    {
                        cmbBedenler.Properties.Items.Add(new ComboItem() { Text = rd.GetString(i), Value = kod }, false);
                    }
                }
                rd.Close();
            }
        }

        private void frmStokKarti_Load(object sender, EventArgs e)
        {
            SqlDataReader rd = DataLayer.Get.Reader("SELECT     urt_kod,urt_ismi FROM         STOK_URETICILERI");
            if (rd.HasRows)
            {
                while (rd.Read())
                {
                    cmbBarkodGrup.Properties.Items.Add(new ComboItem() { Text = rd.GetString(1), Value = rd.GetString(0) });
                }
                rd.Close();
            }
            if (cmbBarkodGrup.Properties.Items.Count > 0)
            {
                cmbBarkodGrup.SelectedIndex = 0;
            }

            rd = DataLayer.Get.Reader("SELECT     rnk_kodu, rnk_ismi FROM         STOK_RENK_TANIMLARI");
            if (rd.HasRows)
            {
                while (rd.Read())
                {
                    cmbRenk.Properties.Items.Add(new ComboItem() { Text = rd.GetString(1), Value = rd.GetString(0) });
                }
                rd.Close();
            }

            rd = DataLayer.Get.Reader("SELECT     bdn_kodu, bdn_ismi  FROM         STOK_BEDEN_TANIMLARI");
            if (rd.HasRows)
            {
                while (rd.Read())
                {
                    cmbBeden.Properties.Items.Add(new ComboItem() { Text = rd.GetString(1), Value = rd.GetString(0) });
                }
                rd.Close();
            }

        }

        private void txtStokKodu_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            using (frmListe liste = new frmListe())
            {
                liste.ListeTipi = frmListe.ListeTipleri.StokKodundan;
                if (txtStokKodu.Text.IndexOf('*') > -1)
                    liste.Filtre = txtStokKodu.Text;
                else
                    liste.Filtre = "*";
                if (liste.ShowDialog() == DialogResult.OK)
                {
                    StokBul(int.Parse(liste.SelectedText));
                }
            }
        }

        private void AcilanlariIsaretle(string stokkod)
        {
            DataTable dt = DataLayer.Get.Fill(string.Format("SELECT     sto_renk_kodu,sto_beden_kodu  FROM STOKLAR  WHERE     (sto_GtipNo = '{0}')", stokkod));
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int c = 0; c < gridView1.RowCount; c++)
                {
                    if (dt.Rows[i][0].ToString() == gridView1.GetRowCellDisplayText(c, gridView1.Columns[0]))
                    {
                        for (int r = 1; r < gridView1.Columns.Count; r++)
                        {
                            if (gridView1.Columns[r].Name == "col" + dt.Rows[i][1].ToString())
                            {
                                gridView1.SetRowCellValue(c, gridView1.Columns[r], false);
                            }
                        }
                    }
                }
            }
        }


        private void txtStokAdi_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            using (frmListe liste = new frmListe())
            {
                liste.ListeTipi = frmListe.ListeTipleri.StokAdindan;
                if (txtStokAdi.Text.IndexOf('*') > -1)
                    liste.Filtre = txtStokAdi.Text;
                else
                    liste.Filtre = "*";
                if (liste.ShowDialog() == DialogResult.OK)
                {
                    StokBul(int.Parse(liste.SelectedText));
                }
            }
        }

        private void txtStokKodu_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F10)
            {
                using (frmListe liste = new frmListe())
                {
                    liste.ListeTipi = frmListe.ListeTipleri.StokKodundan;
                    if (txtStokKodu.Text.IndexOf('*') > -1)
                        liste.Filtre = txtStokKodu.Text;
                    else
                        liste.Filtre = "*";
                    if (liste.ShowDialog() == DialogResult.OK)
                    {
                        StokBul(int.Parse(liste.SelectedText));
                    }
                }
            }
        }

        private void txtStokAdi_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F10)
            {
                if (e.KeyCode == Keys.F10)
                {
                    using (frmListe liste = new frmListe())
                    {
                        liste.ListeTipi = frmListe.ListeTipleri.StokAdindan;
                        if (txtStokAdi.Text.IndexOf('*') > -1)
                            liste.Filtre = txtStokAdi.Text;
                        else
                            liste.Filtre = "*";
                        if (liste.ShowDialog() == DialogResult.OK)
                        {
                            StokBul(int.Parse(liste.SelectedText));
                        }
                    }
                }
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtStokKodu.Text) && !string.IsNullOrEmpty(txtStokAdi.Text))
            {
                StokKopyala();
                MessageBox.Show("İşlem Tamamlandı !");
            }
            else
            {
                MessageBox.Show("Lütfen Bilgileri Eksiksiz Giriniz !");
            }
        }

        private void cmbBedenler_Closed(object sender, DevExpress.XtraEditors.Controls.ClosedEventArgs e)
        {
            BedenRenkHazirla();
        }

        private void cmbRenk_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbRenk.SelectedIndex > -1)
            {
                ComboItem item = cmbRenk.SelectedItem as ComboItem;
                renk_yukle(item.Value.ToString());
            }
        }

        private void cmbBeden_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbBeden.SelectedIndex > -1)
            {
                ComboItem item = cmbBeden.SelectedItem as ComboItem;
                beden_yukle(item.Value.ToString());
            }
        }
    }
}
